绑定表达式参考
您可以在这里找到绑定表达式的参考,并将参考添加到节点、样式和状态机的绑定中。请参阅使用样式和状态机。
将绑定 (Bindings) 属性添加到节点后,您可以创建绑定。 蓝色类型标记由绑定控制的属性。 您绑定的属性会重写在属性 (Properties) 中设置的属性。
使用绑定时请记住:
- 只有对类似数据类型的绑定才有效。例如,只能将颜色绑定到颜色,将 vector2 绑定到 vector2,以此类推。
- 绑定取最后一个表达式的值,无论是赋值、一元还是二元运算,又或者只是常量值或变量本身。
- 在绑定中,您可以在四种基本类型之间转换字符串:整数、浮点、布尔值和字符串。 整数和浮点数之间的转换为隐式,并取决于使用该值的属性类型。与字符串之间的转换为显式。
请参阅使用绑定和排除绑定问题。
语法
#(备注)
在包含备注的每一行的开头使用一个井号。您可以在备注中以任何顺序使用字符。
#这是备注,所以可描述绑定表达式
#计算 A 的值
A = (2 + 4) / 3
()(小括号)
使用小括号进行分组以及包含表达式和参数,并控制执行顺序。
#包含表达式:计算两个值的模数
MOD(23, 27)
#将表达式分组:首先求 2 与 4 的和,然后用求和结果除以 3
# 并返回 2
A = (2 + 4) / 3
#首先将 FOV 属性添加到渲染变换 (Render Transformation) 缩放 X (Scale X) 属性字段,
#然后将乘积除以 2
({../Camera/Fov} + {../Box/RenderTransformation}.ScaleX) / 2
=(分配)
分配一个值给变量。
语法
|
var = value
|
参数
|
var
|
任何有效的变量名称 |
value
|
任何支持的变量值 |
|
示例
|
#将值 2.0 分配给变量 'A'
A = 2.0 #将值 4.0 分配给变量 'B'
B = 4.0
|
运算符
+(加)
将两个或更多的值相加,或者将多个字符串组合到一个字符串中。
语法
|
value1 + value2
|
参数
|
value1
|
color、int、float、string、Vector2、Vector3、Vector4 或 boolean:被加数 |
value2
|
color、int、float、string、Vector2、Vector3、Vector4 或 boolean:被加数 |
|
返回
|
与参数的类型相同,区别在于如果一个参数是浮点值,将返回浮点值。 |
示例
|
A = 2.0
B = 4.0
#返回 6.0
A + B
|
-(减)
从第一个参数的值中减去第二个参数的值。作为一种否定运算符,它会返回相当于将值乘以 -1 的结果。
语法
|
value1 - value2
|
参数
|
value1
|
color、int、float、string、Vector2、Vector3、Vector4 或 boolean:被减数 |
value2
|
color、int、float、string、Vector2、Vector3、Vector4 或 boolean:减数 |
|
返回
|
与参数的类型相同,区别在于如果一个参数是浮点值,将返回浮点值。 |
示例
|
A = 2.0
B = 4.0
#返回 -2.0
A - B
|
*(乘)
乘以参数的值。
语法
|
value1 * value2
|
参数
|
value1
|
color、int、float、Vector2、Vector3、Vector4 或 boolean:被乘数 |
value2
|
color、int、float、Vector2、Vector3、Vector4 或 boolean:乘数 |
请注意,两个参数只能有一个是布尔值。
|
返回
|
与参数的类型相同,区别在于:
- 如果一个参数是浮点值,将返回浮点值
- 如果一个参数是布尔值,将返回整数值,或者返回浮点值(如果至少一个参数是浮点值)
|
示例
|
A = 2.0
B = 4.0
#返回 8.0
A * B
|
/(除)
将第一个参数的值除以第二个参数的值。
语法
|
value1 / value2
|
参数
|
value1
|
color、int、float、Vector2、Vector3、Vector4 或 boolean:被除数 |
value2
|
color、int、float、Vector2、Vector3、Vector4 或 boolean:除数 |
请注意,两个参数只能有一个是布尔值。
|
返回
|
与参数的类型相同,区别在于:
- 如果一个参数是浮点值,将返回浮点值
- 如果一个参数是布尔值,将返回整数值,或者返回浮点值(如果至少一个参数是浮点值)
|
示例
|
A = 2.0
B = 4.0
# 返回 0.5
A / B
|
转换
整数和浮点数之间的转换为隐式,并取决于使用该值的属性类型。与字符串之间的转换为显式。
整数 (Integer)
将值转换为整数。整数和浮点数之间的转换为隐式,并取决于使用该值的属性类型。与字符串之间的转换为显式。
语法
|
INT(value)
|
参数
|
value
|
float、boolean、string |
|
返回
|
int |
示例
|
#以显式方式将字符串 "5" 转换为整数,将其添加到整数 5 中,
#并将结果分配给变量 A。返回整数 10。
A = 5 + INT("5") #以隐式方式将布尔值 True 转换为整数,将其添加到整数 5 中,
#并将结果分配给变量 A。返回整数 6。
B = 5 + True #以显式方式将浮点值 5.5 转换为整数,将其添加到整数中,
#并将结果分配给变量 C。返回整数 7。
C = 2 + INT(5.5)
|
浮点 (Float)
将值转换为浮点值。整数和浮点数之间的转换为隐式,并取决于使用该值的属性类型。与字符串之间的转换为显式。
语法
|
FLOAT(value)
|
参数
|
|
返回
|
float |
示例
|
#将字符串 "5" 转换为浮点值,将其添加到整数 5 中,
# 并将结果分配给变量 A。返回浮点值 10.000000。
A = 5 + FLOAT("5") #以隐式方式将布尔值 True 转换为浮点值,将其添加到浮点值 5.1 中,
#并将结果分配给变量 A。返回浮点值 6.1。
B = 5.1 + True
|
布尔类型 (Boolean)
将值转换为布尔值。整数和浮点数之间的转换为隐式,并取决于使用该值的属性类型。与字符串之间的转换为显式。
语法
|
BOOL(value)
|
参数
|
|
返回
|
bool |
示例
|
#将布尔值 "True" 转换为整数值 1,将其添加到整数 41 中,
#并将结果分配给变量 A。返回整数值 42。
A = 41 + BOOL("True")
|
字符串 (String)
将值转换为字符串。整数和浮点数之间的转换为隐式,并取决于使用该值的属性类型。与字符串之间的转换为显式。
语法
|
STRING(value)
|
参数
|
|
返回
|
string |
示例
|
#将整数值 5 转换为字符串,将其串联到字符串
# "Five is written as ",并将结果分配给变量 B。
# 返回字符串 "Five is written as "。
A = "Five is written as " + STRING(5) #将变量 A 的值转换为字符串,将其串联到
#字符串 "Number of fingers on two hands is " 中,并将结果分配给
#变量 B。返回字符串 "Number of fingers on two hands is 10"。
A = 10
C = "Number of fingers on two hands is " + STRING(A) #将浮点属性 Float 的值转换为四舍五入到
#一个小数位的字符串。要显示两个小数位,请将 10 替换为 100,
#要显示三个小数位,请将 10 替换为 1000,以此类推。
a = INT(FLOOR({@../Float}))
b = INT(10*({@../Float} - a))
STRING(a) + "."+ STRING(b)
|
函数
绝对值
计算数值或变量的绝对值。数值的绝对值始终是正值。
语法
|
ABS(value)
|
参数
|
value
|
color、int、float、Vector2、Vector3、Vector4:要计算的数值 |
|
返回
|
与参数的类型相同 |
示例
|
#返回 5.2
ABS(-5.2)
|
动画化
将属性值绑定到您在动画数据 (Animation Data) 项中定义的分段函数。请参阅在绑定中使用分段函数。
Animate
需要两个参数:要绑定动画数据 (Animation Data) 项到其中的属性,以及您在其中定义了用于设置边界属性值的分段函数的那个动画数据 (Animation Data) 项的资源 ID 或 kzb URL。
使用资源 ID 时,您必须将动画数据 (Animation Data) 项放在包含绑定的节点能访问的资源字典中。请参阅使用资源字典。
例如,您可以使用 Animate
函数来设置仪表在值介于 0 到 100 之间时,移动速度快于值大于 100 时。
语法
|
Animate(property, "animationDataResource")
|
参数
|
property
|
要用于沿动画曲线而不是时间进行移动的属性的路径和名称
|
animationDataResource
|
要使用其动画曲线来设置边界属性值的那个动画数据 (Animation Data) 项的资源 ID 或 kzb URL |
|
示例
|
# 使用Speed 属性沿资源 ID 为
# Speed curve 的动画数据 (Animation Data) 项的动画曲线移动。
Animate({@./Speed}, "Speed curve") # 使用Speed 属性沿 kzb URL 为
# Speed curve 的动画数据 (Animation Data) 项的动画曲线移动。
Animate({@./Speed}, "kzb://cluster/动画数据 (Animation Data)/Speed curve")
|
上限
计算大于或等于参数值的最近整数值。
语法
|
CEIL(value)
|
参数
|
value
|
color、int、float、Vector2、Vector3、Vector4:要计算的数值 |
|
返回
|
与参数的类型相同 |
示例
|
#返回 3.0
CEIL(2.06) #返回 16.0
CEIL(15.92) #返回 -2
CEIL(-2.06)
|
限制 (Clamp)
限制值,使其介于两个值之间。CLAMP
返回同 MIN(MAX(value, low), high)
相同的值。
语法
|
CLAMP(low, high, value)
|
参数
|
low
|
int 或 float:用于限制值的范围的下限 |
high
|
int 或 float:用于限制值的范围的上限 |
value
|
int 或 float:要限制的值 |
|
返回
|
如果所有参数都是浮点值,则为浮点值,否则为整数值 |
示例
|
#返回 1
CLAMP(1, 4, 0.5)
#返回 4
CLAMP(-3, 8, 4)
|
创建旋转
使用四元数数据类型在布局变换 (Layout Transformation) 或渲染变换 (Render Transformation) 属性中创建旋转。四元数据类型用于旋转属性字段。请参阅创建绕 X 轴的旋转、创建绕 Y 轴的旋转、创建绕 Z 轴的旋转、旋转 (Rotate)、绕 X 轴旋转、绕 Y 轴旋转、绕 Z 轴旋转。
语法
|
CreateRotation(x, y, z)
|
参数
|
x
|
int 或 float:绕 X 轴的旋转度数 |
y
|
int 或 float:绕 Y 轴的旋转度数 |
z
|
int 或 float:绕 Z 轴的旋转度数 |
|
返回
|
quaternion |
示例
|
#旋转边界节点:
# - 绕 X 轴旋转 10 度
# - 绕 Y 轴旋转 40 度
# - 绕 Z 轴旋转 50 度
CreateRotation(10, 40, 50) #旋转边界节点:
# - 绕 X 轴旋转 30.5 度
# - 绕 Y 轴旋转 80 度
# - 绕 Z 轴旋转 46.5 度
CreateRotation(30.5, 80, 46.5)
|
创建绕 X 轴的旋转
使用四元数数据类型绕 X 轴在布局变换 (Layout Transformation) 或渲染变换 (Render Transformation) 属性中创建旋转。四元数据类型用于旋转属性字段。请参阅创建旋转、创建绕 Y 轴的旋转、创建绕 Z 轴的旋转、旋转 (Rotate)、绕 X 轴旋转、绕 Y 轴旋转、绕 Z 轴旋转。
语法
|
CreateRotationX(x)
|
参数
|
|
返回
|
quaternion |
示例
|
#绕 X 轴将边界节点旋转 55 度。
CreateRotationX(55)
|
创建绕 Y 轴的旋转
使用四元数数据类型绕 Y 轴在布局变换 (Layout Transformation) 或 渲染变换 (Render Transformation) 属性中创建旋转。四元数据类型仅用于旋转属性字段。请参阅 创建旋转、创建绕 X 轴的旋转、创建绕 Z 轴的旋转、旋转 (Rotate)、绕 X 轴旋转、绕 Y 轴旋转、绕 Z 轴旋转。
语法
|
CreateRotationY(y)
|
参数
|
|
返回
|
quaternion |
示例
|
#绕 Y 轴上将边界节点旋转 55 度。
CreateRotationY(55) #绕 Y 轴上将边界节点旋转 16.5 度。
CreateRotationY(16.5)
|
创建绕 Z 轴的旋转
使用四元数数据类型在 Z 轴上的布局变换 (Layout Transformation) 或渲染变换 (Render Transformation) 属性中创建旋转角度。四元数据类型仅用于旋转属性字段。请参阅创建旋转、创建绕 X 轴的旋转、创建绕 Y 轴的旋转、旋转 (Rotate)、绕 X 轴旋转、绕 Y 轴旋转、绕 Z 轴旋转。
语法
|
CreateRotationZ(z)
|
参数
|
|
返回
|
quaternion |
示例
|
#绕 Z 轴上将边界节点旋转 33 度。
CreateRotationZ(33) #绕 Z 轴上将边界节点旋转 5.5 度。
CreateRotationZ(5.5)
|
提取 X 欧拉角
从布局变换 (Layout Transformation) 或渲染变换 (Render Transformation) 属性中提取 X 欧拉角。您可以使用 ExtractEulerX
旋转属性字段: ExtractEulerX
将四元数数据类型值视为参数并返回浮点数据。
当在 SRT3D 属性中设置角度时,角度将存储在四元数数据类型中。由于 ExtractEulerX
函数会从四元数中提取角度,因此返回的欧拉角将不同于最初在 SRT3D 属性中设置的角度。这两个角度都定义了同一个旋转角度。
请参阅提取 Y 欧拉角、提取 Z 欧拉角、创建旋转、创建绕 X 轴的旋转、创建绕 Y 轴的旋转、旋转 (Rotate)、绕 X 轴旋转、绕 Y 轴旋转、绕 Z 轴旋转。
语法
|
ExtractEulerX(rotationField)
|
参数
|
rotationField
|
布局变换 (Layout Transformation) 或 渲染变换 (Render Transformation) 属性的旋转属性字段 |
|
返回
|
float |
示例
|
#从 布局变换 (Layout Transformation) 属性的旋转属性字段
#提取 X 欧拉角。
ExtractEulerX({@./Node3D.LayoutTransformation}.Rotation) #从 布局变换 (Layout Transformation) 属性的旋转属性字段
#提取 X 欧拉角,并将该 X 欧拉角的值
#绑定到 旋转 Y (Rotation Y) 属性字段。
a = ExtractEulerX({@./Node3D.LayoutTransformation}.Rotation)
CreateRotation(0, a, 0)
|
提取 Y 欧拉角
从布局变换 (Layout Transformation) 或渲染变换 (Render Transformation) 属性提取 Y 欧拉角。您可以使用 ExtractEulerY
旋转属性字段: ExtractEulerY
将四元数数据类型值视为参数并返回浮点数据。
当在 SRT3D 属性中设置角度时,角度将存储在四元数数据类型中。由于 ExtractEulerX
函数会从四元数中提取角度,因此返回的欧拉角将不同于最初在 SRT3D 属性中设置的角度。这两个角度都定义了同一个旋转角度。
请参阅提取 X 欧拉角、提取 Z 欧拉角、创建旋转、创建绕 X 轴的旋转、创建绕 Y 轴的旋转、旋转 (Rotate)、绕 X 轴旋转、绕 Y 轴旋转、绕 Z 轴旋转。
语法
|
ExtractEulerY(rotationField)
|
参数
|
rotationField
|
布局变换 (Layout Transformation) 或 渲染变换 (Render Transformation) 属性的旋转属性字段 |
|
返回
|
float |
示例
|
#从 布局变换 (Layout Transformation) 属性的旋转属性字段
#提取 Y 欧拉角。
ExtractEulerY({@./Node3D.LayoutTransformation}.Rotation)
|
提取 Z 欧拉角
从布局变换 (Layout Transformation) 或渲染变换 (Render Transformation) 属性提取 Z 欧拉角。您可以使用 ExtractEulerZ
旋转属性字段: ExtractEulerZ
将四元数数据类型值视为参数并返回浮点数据。
当在 SRT3D 属性中设置角度时,角度将存储在四元数数据类型中。由于 ExtractEulerX
函数会从四元数中提取角度,因此返回的欧拉角将不同于最初在 SRT3D 属性中设置的角度。这两个角度都定义了同一个旋转角度。
请参阅提取 X 欧拉角、提取 Y 欧拉角、创建旋转、创建绕 X 轴的旋转、创建绕 Y 轴的旋转、旋转 (Rotate)、绕 X 轴旋转、绕 Y 轴旋转、绕 Z 轴旋转。
语法
|
ExtractEulerZ(rotationField)
|
参数
|
rotationField
|
布局变换 (Layout Transformation) 或 渲染变换 (Render Transformation) 属性的旋转属性字段 |
|
返回
|
float |
示例
|
#从 布局变换 (Layout Transformation) 属性的旋转属性字段
#提取 Z 欧拉角。
ExtractEulerZ({@./Node3D.LayoutTransformation}.Rotation)
|
下限
计算小于或等于参数值的最近整数值。
语法
|
FLOOR(value)
|
参数
|
value
|
color、int、float、Vector2、Vector3、Vector4:要 compute 的数值 |
|
返回
|
与参数的类型相同 |
示例
|
#返回 0.0
FLOOR(0.8) #返回 1.0
FLOOR(1.5)
#返回 15.0
FLOOR(15.92)
|
线性步进
在两个值之间执行线性插值。LINEARSTEP
返回同 CLAMP(0, 1, (value - low) / (high - low))
相同的值。
语法
|
LINEARSTEP(low, high, value)
|
参数
|
low
|
int 或 float:线性函数的下限 |
high
|
int 或 float:线性函数的上限 |
value
|
int 或 float:要限制的值 |
|
返回
|
如果其中一个参数是浮点值,则为浮点值,否则为整数值:
- 0.0,如果
value 小于或等于 low
- 1.0,如果
value 大于或等于 high
- 否则
(value - low) / (high - low)
|
示例
|
#返回 0.0
LINEARSTEP(1, 4, 0.5)
#返回 0.64 (7/11)
LINEARSTEP(-3, 8, 4.0)
|
最大值
确定两个值中的较大者,并返回较大的值。
语法
|
MAX(value1, value2)
|
参数
|
value1
|
int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第一个数值 |
value2
|
int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第二个数值 |
请注意,两个参数只能有一个是布尔值。
|
返回
|
与参数的类型相同,如果一个参数是浮点值,则为浮点值,否则为整数值 |
示例
|
#返回 5
MAX(2, 5)
#返回 -2.1
MAX(-10, -2.1)
|
最小值
确定两个值中的较小者,并返回较小的值。
语法
|
MIN(value1, value2)
|
参数
|
value1
|
int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第一个数值 |
value2
|
int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第二个数值 |
请注意,两个参数只能有一个是布尔值。
|
返回
|
与参数的类型相同,如果一个参数是浮点值,则为浮点值,否则为整数值 |
示例
|
#返回 2
MIN(2, 5)
#返回 -10
MIN(-10, -2.1)
|
混合
通过用一个值在两个值之间进行加权,在两个值之间执行线性插值。Kanzi 会使用函数来计算结果: (end - start) * weight + start
。
语法
|
MIX(start, end, weight)
|
参数
|
start
|
int 或 float:插值范围的起点 |
end
|
int 或 float:插值范围的终点 |
weight
|
int 或 float:用于插值的值介于 start 与 end |
|
返回
|
如果其中一个参数是浮点值,则为浮点值,否则为整数值 |
示例
|
#返回 2.5
MIX(1, 4, 0.5)
#返回 0.5
MIX(-1, -4, -0.5)
|
模数
计算模数,模数是使用模数同余函数将一个数值除以另一个数值之后的余数。
请参阅余数。
语法
|
MOD(value1, value2)
|
参数
|
value1
|
int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第一个数值:被除数 |
value2
|
int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第一个数值:除数 |
请注意,两个参数只能有一个是布尔值。
|
返回
|
与参数的类型相同,如果一个参数是浮点值,则为浮点值,否则为整数值 |
示例
|
#返回 3
MOD(13, 5)
#返回 2
MOD(-13, 5)
|
Power
计算指数表达式。这是一种让数与数本身相乘的高效方法。
语法
|
POW(n, e)
|
参数
|
n
|
int、float、color、Vector2、Vector3、Vector4:指数表达式的底数 |
e
|
int、float 或 boolean:指数运算的指数 |
|
返回
|
与参数 n 的类型相同,区别在于对于整数值,将返回浮点值 |
示例
|
#等于 2*2*2*2*2 并返回 32
POW(2, 5)
|
余数
计算一个数值除以另一个向零四舍五入的数值后的余数。
请参阅 模数。
语法
|
REM(value1, value2)
|
参数
|
value1
|
int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第一个数值:被除数 |
value2
|
int、float、Vector2、Vector3、Vector4 或 boolean:要比较的第一个数值:除数 |
请注意,两个参数只能有一个是布尔值。
|
返回
|
与参数的类型相同,如果一个参数是浮点值,则为浮点值,否则为整数值 |
示例
|
#返回 3
REM(13, 5)
#返回 -3
REM(-13, 5)
|
旋转 (Rotate)
创建整个 SRT3D 旋转属性字段。您可以将 SRT3D 数据类型与布局变换 (Layout Transformation) 和渲染变换 (Render Transformation) 属性配合使用。请参阅绕 X 轴旋转、绕 Y 轴旋转、绕 Z 轴旋转、创建旋转、创建绕 X 轴的旋转、创建绕 Y 轴的旋转、创建绕 Z 轴的旋转。
语法
|
Rotate(rotationField, value)
|
参数
|
rotationField
|
布局变换 (Layout Transformation) 或 渲染变换 (Render Transformation) 属性的旋转属性字段 |
value
|
Vector3 |
|
返回
|
quaternion |
示例
|
#旋转边界节点:
# - 绕 X 轴逆时针旋转 40 度
# - 绕 Y 轴逆时针旋转 80 度
# - 绕 Z 轴逆时针旋转 60 度。
Rotate({./Node3D.LayoutTransformation}.Rotation, Vector3(40, 80, 60))
|
绕 X 轴旋转
绕 X 轴创建整个 SRT3D 旋转属性字段。您可以将 SRT3D 数据类型与布局变换 (Layout Transformation) 和渲染变换 (Render Transformation) 属性配合使用。请参阅旋转 (Rotate)、创建旋转、创建绕 X 轴的旋转、创建绕 Y 轴的旋转、创建绕 Z 轴的旋转。
语法
|
RotateX(rotationField, value)
|
参数
|
rotationField
|
布局变换 (Layout Transformation) 或 渲染变换 (Render Transformation) 属性的旋转属性字段 |
value
|
整数值或浮点值 |
|
返回
|
quaternion |
示例
|
# 绕 X 轴将边界节点逆时针旋转 20 度。
RotateX({./Node3D.LayoutTransformation}.Rotation, 20)
|
绕 Y 轴旋转
绕 Y 轴创建整个 SRT3D 旋转属性字段。您可以将 SRT3D 数据类型与布局变换 (Layout Transformation) 和渲染变换 (Render Transformation) 属性配合使用。请参阅旋转 (Rotate)、创建旋转、创建绕 X 轴的旋转、创建绕 Y 轴的旋转、创建绕 Z 轴的旋转。
语法
|
RotateY(rotationField, value)
|
参数
|
rotationField
|
布局变换 (Layout Transformation) 或 渲染变换 (Render Transformation) 属性的旋转属性字段 |
value
|
整数值或浮点值 |
|
返回
|
quaternion |
示例
|
# 绕 Y 轴将边界节点逆时针旋转 20 度。
RotateY({./Node3D.LayoutTransformation}.Rotation, 20)
|
绕 Z 轴旋转
绕 Z 轴创建整个 SRT3D 旋转属性字段。您可以将 SRT3D 数据类型与布局变换 (Layout Transformation) 和渲染变换 (Render Transformation) 属性配合使用。请参阅旋转 (Rotate)、创建旋转、创建绕 X 轴的旋转、创建绕 Y 轴的旋转、创建绕 Z 轴的旋转。
语法
|
RotateZ(rotationField, value)
|
参数
|
rotationField
|
布局变换 (Layout Transformation) 或 渲染变换 (Render Transformation) 属性的旋转属性字段 |
value
|
整数值或浮点值 |
|
返回
|
quaternion |
示例
|
#绕 Z 轴将边界节点逆时针旋转 20 度。
RotateZ({./Node3D.LayoutTransformation}.Rotation, 20)
|
四舍五入
计算最近的整数。
语法
|
ROUND(value)
|
参数
|
value
|
color、int、float、Vector2、Vector3、Vector4:要计算的数值 |
|
返回
|
与参数的类型相同 |
示例
|
#返回 1.0
ROUND(0.8)
#返回 2.0
ROUND(1.5)
#返回 0.0
ROUND(0.1)
|
平方根
计算数值的平方根。数值的平方根始终是正值。
语法
|
SQRT(n)
|
参数
|
n
|
int、float、color、Vector2、Vector3、Vector4:要计算的数值 |
|
返回
|
与参数的类型相同,区别在于对于整数值,将返回浮点值 |
示例
|
#返回 5.0
SQRT(25)
|
步进
将一个值与阈值进行比较。
语法
|
STEP(threshold, value)
|
参数
|
threshold
|
int、float、color、Vector2、Vector3、Vector4:比较要用的阈值 |
value
|
int、float、color、Vector2、Vector3、Vector4:要计算的数值:要与阈值进行比较的值 |
|
返回
|
浮点值,如果 value 小于 threshold ,则为 0.0,如果 value 等于或大于值,则为 1.0 threshold |
示例
|
#返回 1.0
STEP(2, 5)
#返回 0.0
STEP(0.0, -0.1)
#返回 1.0
STEP(1.0, 1.0)
|
通用绑定表达式
常数
要将属性值绑定到常数,请只输入常数。
#将所选属性的值绑定到 10。
10
变量
在绑定表达式中,您可以使用变量。
#将值 1 分配给变量 'A',并将变量
#的值绑定到所选的属性。
A = 1
#与上述描述相同,但使用另一种语法。
A = (1)
属性绑定
要将一个属性绑定到另一个属性,请在花括号中输入包含要绑定的属性的那个节点的相对路径,然后输入一个正斜杠和源属性的名称。
当在路径前面使用 @ 符号时,每当场景图中的源节点和目标节点之间的位置发生变化,Kanzi Studio 都会更新绑定表达式。请注意,使用 @ 符号时,您只能在同一个预设件内创建绑定,而不能在预设件之间创建绑定。
您可以将属性名称从属性 (Properties) 拖到绑定参数编辑器 (Binding Argument Editor) 中。
您可以对属性值和属性字段值使用运算符和小括号。
语法
|
{[path]/[property]}
|
参数
|
[path]
|
节点的相对路径 |
[property]
|
属性的名称 |
|
示例
|
#绑定到当前节点的布局宽度 (Layout Width) 属性。
{@./LayoutWidth}
#绑定到方框 摄像机 (Camera) 节点的 FOV 属性。
{@../Camera/Fov}
#与上述描述相同,但 Kanzi Studio 不跟踪目标节点的位置。
{../Camera/Fov}
#绑定到方框 方框 (Box) 节点的 垂直边距 (Vertical Margin) 属性。
{@../Box/LayoutVerticalMargin}
#将 FOV 属性乘以布局变换 (Layout Transformation) 缩放 X (Scale X) 属性字段。
{@../Camera/Fov} * {../Box/LayoutTransformation}.ScaleX #将当前节点的 渲染变换 (Render Transformation) 平移 X (Translation X) 和 平移 Y (Translation Y) 属性字段绑定到使用 Vector2D 数据类型的属性的每个矢量。#在 绑定参数编辑器 (Binding Argument Editor) 编辑器中,将 属性 (Property) 设置为使用 Vector2D 数据类型的属性。例如,使用水平边距 (Horizontal Margin) 属性。 X = {@./Node3D.RenderTransformation}.TranslationX Y = {@./Node3D.RenderTransformation}.TranslationY V = Vector2(0.0, 0.0) V.VectorX = X V.VectorY = Y V
|
预设件根绑定
预设件可以包含具有各自属性的节点树。编辑预设件中的节点或工程中的预设件实例时,就会更改该预设件所有实例中的这些节点。但您可以通过重写默认预设件中的值来自定义预设件的各个实例以获得各个值。例如,您为地址簿条目创建预设件时,每个地址簿条目要显示不同的名称、编号和照片。
要将某个预设件中任意节点的属性绑定到该预计件实例的根中,请在绑定表达中,在花括号中输入 ##Template
,然后输入要绑定到的预设件实例的根中对应属性的名称。
例如,如果 按钮 (Button) 预设件中存在一个 文本块 (Text Block) 节点,而您希望在该预设件的不同实例中显示不同的文本,则可以使用 ##Template
绑定语法。
建议
您可以让 Kanzi Studio 创建一个预设件根绑定。当您选择预设件的任意节点并在 属性 (Properties) 中点击属性旁边的 时,Kanzi Studio 会:
- 从该属性创建一个自定义属性。
- 将该自定义属性添加到预设件,并在该预设件的每个实例中,将该自定义属性按照常用属性显示。
- 在节点中创建
##Template
到预设件根中该自定义属性的绑定。
请参阅使用绑定到自定义预设件的实例。
语法
|
{##Template/[property]}
|
参数
|
[property]
|
要绑定的预设件实例的根中,属性的名称 |
|
示例
|
#绑定到该预设件实例根中的 MyProject.ContactNameText 属性。
{##Template/MyProject.ContactNameText}
|
别名绑定
要将属性绑定到别名,在花括号中输入 #
符号,后跟别名名称、正斜杠以及别名所指向的项的属性名称。请参阅 使用别名。
语法
|
{#[aliasName]/[property]}
|
参数
|
[aliasName]
|
别名的名称 |
[property]
|
属性的名称 |
|
示例
|
#绑定到别名为“Sphere”的目标节点的 布局宽度 (Layout Width) 属性。
{#Sphere/LayoutWidth}
#用别名为“MainCamera”的目标节点的 FOV 属性
#乘以 渲染变换 (Render Transformation) 属性 缩放 X (Scale X) 属性字段。
{#MainCamera/Fov} * {../Box/RenderTransformation}.ScaleX
|
属性字段绑定
要将属性绑定到属性的属性字段,请在花括号中输入到节点的对应路径,然后输入一个正斜杠、属性字段的周期和名称。对于并非通用的属性字段,不要使用属性文件名称,而应使用 VectorN
,其中的 N
是 X
、Y
、Z
或 W
,表示属性在 属性 (Properties) 中的列出顺序。您可以对属性值和属性字段值使用运算符和小括号。
当您希望将属性绑定到特性时,请使用以下名称。
颜色 (Color) 属性红色通道值 |
ColorR |
Color_R, R |
颜色 (Color) 属性绿色通道值 |
ColorG |
Color_G, G |
颜色 (Color) 属性蓝色通道值 |
ColorB |
Color_B, B |
颜色 (Color) 属性阿尔法通道值 |
ColorA |
Color_A, A |
节点围绕您使用旋转函数设置的 X、Y 和 Z 轴旋转的角度值。请参阅创建旋转、创建绕 X 轴的旋转、创建绕 Y 轴的旋转、创建绕 Z 轴的旋转、旋转 (Rotate)、绕 X 轴旋转、绕 Y 轴旋转和绕 Z 轴旋转。 |
旋转 |
旋转 |
节点围绕 Z 轴旋转的角度值 |
RotationZ |
Rotation_Z |
节点沿 X 轴缩放的比例值 |
ScaleX |
Scale_X |
节点沿 Y 轴缩放的比例值 |
ScaleY |
Scale_Y |
节点沿 Z 轴缩放的比例值 |
ScaleZ |
Scale_Z |
节点在 X 轴上的位置值 |
TranslationX |
Translation_X, X |
节点在 Y 轴上的位置值 |
TranslationY |
Translation_Y, Y |
节点在 Z 轴上的位置值 |
TranslationZ |
Translation_Z, Z |
属性的第一个属性字段 |
VectorX |
Vector_X |
属性的第二个属性字段 |
VectorY |
Vector_Y |
属性的第三个属性字段 |
VectorZ |
Vector_Z |
属性的第四个属性字段 |
VectorW |
Vector_W |
语法
|
{[path]/[property]}.[field]
|
参数
|
[path]
|
节点的相对路径 |
[property]
|
属性的名称 |
[field]
|
属性字段的名称 |
|
示例
|
#绑定到 方框 (Box) 节点 布局变换 (Layout Transformation) 属性的
#属性字段 缩放 X (Scale X)(缩放 X (Scale X) 属性字段的值)。
{../Box/LayoutTransformation}.ScaleX
#绑定到 点光源 (Point Light) 节点 点光源颜色 (Point Light Color) 属性的
#属性字段 颜色 R (Color R)(红色通道的值)。
{../Point Light/PointLightColor}.ColorR
#光源节点具有一个衰减属性,该属性具有三个属性字段,分别是:
#常数 (Constant)、线性 (Linear) 和二次 (Quadratic)。
#例如,对于点光源 (Point Light):
#要绑定到第一个属性字段 (常数 (Constant))
{../Light/PointLightAttenuation}.VectorX
#要绑定到第二个属性字段 (线性 (Linear))
{../Light/PointLightAttenuation}.VectorY
#要绑定到第三个属性字段 (二次 (Quadratic))
{../Light/PointLightAttenuation}.VectorZ
#用属性 FOV 乘以 渲染变换 (Render Transformation) 属性 缩放 X (Scale X) 属性字段。
{../Camera/Fov} * {../Box/RenderTransformation}.ScaleX #绑定到 图像 (Image) 节点 下对齐 (Bottom) 属性字段的 垂直边距 (Vertical Margin) 属性。
{@../Image/Node.VerticalMargin}.VectorX #绑定到 图像 (Image) 节点 上对齐 (Top) 属性字段的 垂直边距 (Vertical Margin) 属性。
{@../Image/Node.VerticalMargin}.VectorY #将当前节点的 渲染变换 (Render Transformation) 平移 X (Translation X) 和 平移 Y (Translation Y) 属性字段绑定到使用 Vector2D 数据类型的属性的每个矢量。#在 绑定参数编辑器 (Binding Argument Editor) 编辑器中,将 属性 (Property) 设置为使用 Vector2D 数据类型的属性。例如,使用水平边距 (Horizontal Margin) 属性。 X = {@./Node3D.RenderTransformation}.TranslationX Y = {@./Node3D.RenderTransformation}.TranslationY V = Vector2(0.0, 0.0) V.VectorX = X V.VectorY = Y V
|
颜色属性字段绑定
Color4()
绑定颜色属性字段。Color4()
取四个参数:
- 第一个参数指定红色通道的值
- 第二个参数指定绿色通道的值
- 第三个参数指定蓝色通道的值
- 第四个参数指定阿尔法通道的值
颜色值映射到范围 0 到 1。
语法
|
Color4(r, g, b, a)
|
参数
|
r
|
0...1 范围:红色通道值
|
g
|
0...1 范围:绿色通道值
|
b
|
0...1 范围:蓝色通道值
|
a
|
0...1 范围:阿尔法通道值
|
|
示例
|
# 将颜色设置为白色和不透明。
Color4(1, 1, 1, 1)
#与上述描述相同,但使用另一种语法。
Color(1, 1, 1, 1)
#将颜色设置为透明度为 50% 的红色。
Color4(1, 0, 0, 0.5)
#表达式无效,缺少一个参数。
Color4(0.1, 1, 0.4)
#使用变量作为 Color4() 的属性字段,以分配
#整个 颜色 (Color) 属性的属性字段值。
#
#将自定义属性红色、绿色和蓝色分配给
#用于控制节点颜色的变量。
red = {@./Red}
green = {@./Green}
blue = {@./Blue}
color = Color4(0, 0, 0, 1)
#将红色、绿色和蓝色变量分配给每个颜色通道。
color.ColorR = red
color.ColorG = green
color.ColorB = blue
color
|
数据源绑定
要将数据对象绑定到属性或属性字段,请在花括号中输入 DataContext
,然后输入一个句点和要将属性字段的属性绑定到其中的数据对象。使用句点可以访问子数据对象。
语法
|
{DataContext.DataObject}
|
参数
|
|
示例
|
#将项的属性值绑定到speed 数据对象
#在项的数据上下文中,数据对象是仪表数据对象的
#一个子数据对象。
{DataContext.gauges.speed} #绑定数据上下文本身。例如,如果希望将当前的数据上下文
#用作属性值。
{DataContext}
|
网格布局 (Grid Layout) 绑定
要使用绑定功能设置网格布局 (Grid Layout) 节点中的列和行的大小,请在引号中输入每个值,然后输入一个分号:
- 使用浮点数值可以指明行或列具有固定大小。这与在属性 (Properties) 中将列 (Columns) 或行 (Rows) 属性的值设置为固定 (Fixed) 并定义列或行的大小相同。
- 添加一个星号前缀可以指明行或列的大小成比例。这与在属性 (Properties) 中将列 (Columns) 或行 (Rows) 属性的值设置为按比例 (Proportional) 并定义列或行占用的网格布局 (Grid Layout) 的比例相同。
- 将定义留空会指明网格布局 (Grid Layout) 节点自动设置行或列的大小。这与在属性 (Properties) 中将列 (Columns) 或行 (Rows) 属性的值设置为自动 (Automatic) 相同。
语法
|
"value0;value1; ... valueN;"
|
参数
|
|
示例
|
#绑定到列 (Columns) 属性会将这三个列的宽度都设置为固定大小:
# - 第一列的宽度为 2.0。
# - 第二列的宽度为 3.0。
# - 第三列的宽度为 4.0。
"2.0;3.0;4.0;"
#绑定到行 (Rows) 属性会将这三个行的高度都设置为固定大小 5.0。
"5.0;5.0;5.0;" #绑定到行 (Rows) 属性会将两个行的高度设置为其内容的高度。
";;" #绑定到列 (Columns) 属性会相对于网格布局 (Grid Layout) 节点的总宽度设置列的宽度:
# - 第一列的宽度为网格布局 (Grid Layout) 节点宽度的 1/6。
# - 第二列的宽度为网格布局 (Grid Layout) 节点宽度的 2/6。
# - 第三列的宽度为网格布局 (Grid Layout) 节点宽度的 3/6。
"*1.0;*2.0;*3.0;"
|
变换绑定
使用 Srt2D()
和 Srt3D()
常数变换边界节点的缩放、旋转和变换。
Srt2D
使用 Srt2D()
应用变换到具有渲染变换 (Render Transformation) 或布局变换 (Layout Transformation) 属性的 2D 节点。在绑定参数编辑器 (Binding Argument Editor) 中,将属性 (Property) 设置为布局变换 (Layout Transformation) 或渲染变换 (Render Transformation)。
语法
|
Srt2D(scaleX, scaleY, rotation, translationX, translationY)
|
参数
|
scaleX
|
int、float:x 轴上节点的缩放(单位:百分比) |
scaleY
|
int、float:y 轴上节点的缩放(单位:百分比) |
rotation
|
int、float:节点旋转度数 |
translationX
|
int、float:x 轴上节点的变换(单位:像素) |
translationY
|
int、float:y 轴上节点的变换(单位:像素) |
|
返回
|
Transformation2D,边界 2D 节点的缩放、旋转和变换的计算变换 |
示例
|
# 使用布局变换 (Layout Transformation) 或渲染变换 (Render Transformation) 属性应用变换到边界 2D 节点,
# 取决于您在绑定参数编辑器 (Binding Argument Editor) 中设置的属性。
# - 在两个轴上将节点扩展至 150%
# - 顺时针旋转节点 90 度
# - 在 x 轴上变换该节点 800 像素,在 y 轴上变换该节点 60.5 像素。
Srt2D(1.5, 1.5, 90.0, 800.0, 60.5)
|
Srt3D
使用 Srt3D()
应用变换到具有渲染变换 (Render Transformation) 或布局变换 (Layout Transformation) 属性的 3D 节点。在绑定参数编辑器 (Binding Argument Editor) 中,将属性 (Property) 设置为布局变换 (Layout Transformation) 或渲染变换 (Render Transformation)。
语法
|
Srt3D(scaleX, scaleY, scaleZ, rotationX, rotationY, rotationZ, translationX, translationY, translationZ)
|
参数
|
scaleX
|
int、float:x 轴上节点的缩放(单位:百分比) |
scaleY
|
int、float:y 轴上节点的缩放(单位:百分比) |
scaleZ
|
int、float:z 轴上节点的缩放(单位:百分比) |
rotationX
|
int、float:x 轴上节点的旋转(单位:百分比) |
rotationY
|
int、float:y 轴上节点的旋转(单位:百分比) |
rotationZ
|
int、float:z 轴上节点的旋转(单位:百分比) |
translationX
|
int、float:x 轴上节点的变换(单位:设备独立单位) |
translationY
|
int、float:y 轴上节点的变换(单位:设备独立单位) |
translationZ
|
int、float:z 轴上节点的变换(单位:设备独立单位) |
|
返回
|
Transformation3D,边界 3D 节点的缩放、旋转和变换的计算变换 |
示例
|
# 使用布局变换 (Layout Transformation) 或渲染变换 (Render Transformation) 属性应用变换到边界 3D 节点,
# 取决于您在绑定参数编辑器 (Binding Argument Editor) 中设置的属性。
# - 在所有轴上缩放节点至 70%
# - x 轴上逆时针旋转节点 30 度,y 轴 60 度,z 轴 30 度
# - 在所有轴上按 1 个设备独立单位变换节点
Srt3D(0.7, 0.7, 0.7, -30.0, -60.0, -30.0, 1.0, 1.0, 1.0)
|
另请参阅
使用绑定
使用别名
排除绑定问题
打开导航